<?php
/**
 * マイページアカウント登録・更新API　モデルクラス<br />
 *
 * @package apamanshop
 * @author M.Matsutani
 * @copyright コピーライト(要確認)
 */
class Mypage_Model_Account extends Mypage_Model_Base
{
	/**
	 * マイページアカウント情報の登録
	 *
	 * @param $params
	 * @return string $resCd エラーコード
	 */
	public function insertMypageAccount($params)
	{
		//DBパラメータ用配列生成
    	$db_params = array();

		//+++ Emailアカウント重複チェック
		$sql = "";
		$sql .= "SELECT M92_E_MAIL FROM M92MYPAGE_USER ";
		$sql .= "WHERE M92_E_MAIL = '" . $params['eID'] . "'";

		$userDtl = $this->dbGetList($sql, $db_params);

		//登録済みかチェック
		if ($userDtl[0]['M92_E_MAIL'] <> "")
		{
			$resCd = "9905";
		}
		// 必須パラメータチェック
		else if (empty($params['eID']) || empty($params['ePass']))
		{
			$resCd = "9904";
		}
		else
		{
			//TODO:ｼﾘｱﾙNo取得処理(マイページ用 8固定)
			$strMaxId = $this->UseGetSerialNo("8");

			if ($strMaxId <> "")
			{

				//取得フォーマット(6桁固定 左０埋め)
				$strMaxId = substr("000000" . $strMaxId, strlen("000000" . $strMaxId) - 6, 6);

				//=====SQL生成=====
    			//アカウント登録(ﾏｲﾍﾟｰｼﾞ)

				$db = $this->getDbConnection();
				//トランザクション開始
			    $this->startTransaction($db);

			    try
			    {
					$sql = "";
			  		$sql .= "INSERT INTO M92MYPAGE_USER ";
		          	$sql .= "(";
		          	$sql .= " M92_USER_CD,";
		          	$sql .= " M92_E_MAIL, ";
		          	$sql .= " M92_HANDLE_NAME, ";
		          	$sql .= " M92_PASSWORD, ";
		          	$sql .= " M92_ANNAI_FLG, ";
		          	$sql .= " M92_HTML_MAIL_FLG, ";
		          	$sql .= " M92_SEX, ";
		          	$sql .= " M92_AGE, ";
		          	$sql .= " M92_PC_LOGIN_CNT, ";
		          	$sql .= " M92_PC_LAST_LOGIN_YMD, ";
		          	$sql .= " M92_PC_TOUROKUBI, ";
		          	$sql .= " M92_UPDATE_YMD ";
		          	$sql .= ")";
		          	$sql .= "VALUES(";
		          	$sql .= "to_char(sysdate,'yyyymmdd') || '" . $strMaxId . "'";
	          		$sql .= ",'" . $params['eID'] . "'";
		          	$sql .= ",'" . $params['eNickName'] . "'";
		          	$sql .= ",'" . $params['ePass'] . "'";
		          	$sql .= ",'" . $params['eInfo'] . "'";
		          	$sql .= ",'" . $params['eHTMLMail'] . "'";
		          	$sql .= ",'" . $params['eSex'] . "'";
		          	$sql .= ",'" . $params['eAge'] . "'";
		          	$sql .= ",'1'";
		          	$sql .= ",SYSDATE ";
		          	$sql .= ",SYSDATE ";
		          	$sql .= ",SYSDATE )";

					//=====データ登録=====
					$this->dbExecQuery($sql, $db_params, $db,"M92MYPAGE_USER");

					$this->commitTransaction($db);

					$resCd = "0002";

			    }
			    catch (Exception $e)
			    {
			    	$this->rollbackTransaction($db);
			    	$resCd = "9904";
			    }

				$db->closeConnection();
			}
		}

	return $resCd;
}

     /**
     * マイページアカウント更新
     *
     * @param $params
     * @return string $resCd エラーコード
     */
    public function updateMypageAccount($params)
    {
    	//DBパラメータ用配列生成
    	$db_params = array();

    	//+++ Emailアカウント重複チェック
		$sql = "";
		$sql .= "SELECT M92_E_MAIL FROM M92MYPAGE_USER ";
		$sql .= "WHERE M92_E_MAIL = '" . $params['eID'] . "' ";
		$sql .= " AND M92_DELETE_FLG = '0' ";
		$sql .= "AND M92_USER_CD != " . $params['MyUcd'];

		$userDtl = $this->dbGetList($sql, $db_params);

		//登録済みかチェック
		if ($userDtl[0]['M92_E_MAIL'] <> "")
		{
			$resCd = "9905";
		}
		else
		{

	    	$db = $this->getDbConnection();

			//トランザクション開始
		    $this->startTransaction($db);

		    try
		    {
				$sql = "";
		  		$sql .= "UPDATE M92MYPAGE_USER SET ";
		  		//+++メールアドレス更新
		  		if ($params['eID'] <> ""){
		  			$sql .= "M92_E_MAIL = '" . trim($params['eID']) . "', ";
		  		}
	          	//+++ニックネーム更新
	          	if ($params['eNickName']){
	          		$sql .= "M92_HANDLE_NAME = '" . $params['eNickName'] . "', ";
	          	}
	          	//+++パスワード更新
	          	if ($params['ePass'] <> ""){
	          		$sql .= "M92_PASSWORD = '" . $params['ePass'] . "', ";
	          	}
	          	//+++案内フラグ更新
	          	if ($params['eInfo'] <> ""){
	          		$sql .= "M92_ANNAI_FLG = '" . $params['eInfo'] . "',";
	          	}else{
	          		$sql .= "M92_ANNAI_FLG = '0',";
	          	}
	          	//+++HTMLメールフラグ更新
	          	if ($params['eHTMLMail'] <> ""){
	          		$sql .= "M92_HTML_MAIL_FLG = '" . $params['eHTMLMail'] . "', ";
	          	}else{
	          		$sql .= "M92_HTML_MAIL_FLG = '0', ";
	          	}
	          	$sql .= "M92_UPDATE_YMD = SYSDATE ";
	          	$sql .= " WHERE M92_USER_CD = '" . $params['MyUcd'] . "'";

				//=====データ登録=====
				$this->dbExecQuery($sql, $db_params, $db,"M92MYPAGE_USER");

				$this->commitTransaction($db);

				$resCd = "0003";

		    }
		    catch (Exception $e)
		    {
		    	$this->rollbackTransaction($db);
		    	$resCd = "9906";
		    }

			$db->closeConnection();
		}

		return $resCd;
    }

	/**
	 * プロシージャPRC_GET_SERIAL_NO 呼び出し
	 *
	 * @param string $intKbn 識別ﾌﾗｸﾞ
	 * @return 最新連番
	 */
	public function UseGetSerialNo($intKbn)
	{
		__log_debug(__FILE__, __LINE__, __METHOD__, 'プロシージャ実行前' . $intKbn);

		//普通に色々用意されてた
		//詳しくしりたいなら、下記ソースを見ればだいたいわかる
		//・アダプター関連
		//  library\Zend\Db\Adapter\Abstract.php (Zend基本)
		//  library\Zend\Db\Adapter\Oracle.php (Oracle用)
		//・ステイトメント関連
		//  library\Zend\Db\Statement.php (Zend基本)
		//  library\Zend\Db\Statement\Oracle.php (Oracle用)

		//コネクション取得
		$db = $this->getDbConnection();

		//ステイトメント生成
		$stmt = $db->prepare('begin PRC_GET_SERIAL_NO(8,:a); end;');

		//変数設定
		//bindParam(変数名, バインド値(参照渡し)、タイプ、長さ、オプション)
		//※タイプ種別は http://manual.xwd.jp/ref.oci8.html 参考
		//※タイプ以降は省略可能
		//※oracle用では _bindParam が protected で宣言されてたけど、基本側で最終的に _bindParam が呼ばれてた。。。
		$stmt->bindParam("a", $result, SQLT_CHR, 100);

		//実行
		$stmt->execute();

		__log_debug(__FILE__, __LINE__, __METHOD__, 'プロシージャ後' . $result);

		return $result;
	}

/**
	 * ユーザコード取得
	 *
	 * @param string $params response
	 * @return userCd
	 */
	public function getUserCd($params)
	{
		$userCd = "";

		//DBパラメータ用配列生成
    	$db_params = array();

		$sql = "";
		$sql .= "SELECT M92_USER_CD ";
		$sql .= " FROM M92MYPAGE_USER ";
		$sql .= " WHERE ";
		$sql .= "	M92_E_MAIL = '" . $params['eID'] . "' ";
		$sql .= " AND M92_PASSWORD = '" . $params['ePass'] . "' ";
		$sql .= " AND M92_DELETE_FLG = 0 ";

		$userDtl = $this->dbGetList($sql, $db_params);

		$userCd = $userDtl[0]['M92_USER_CD'];

	return $userCd;
	}
}
?>
